Skip to main content

Idle Bloat Perception + Dark Mode Not Activating

This incident documents a follow-up case where the site felt bloated while idle and dark mode appeared not to activate.

Symptoms

  • Reported: site feels bloated even without active browsing.
  • Reported: dark mode toggle/activation not working as expected.

What Was Checked

Runtime usage (containers)

  • docusaurus CPU and RAM were low at idle (near 0% CPU, low memory footprint).
  • cloudflared was also low usage.

Build/runtime strategy

  • Production startup previously used build-on-start (npm run start) and was changed to serve-only (npm run prod) to avoid restart-time build churn.

Frontend theme behavior

  • Theme bootstrap script in generated HTML previously defaulted to light/system in some cases.
  • Confirmed updated bootstrap now sets dark by default when no stored preference exists.

Fixes Applied

1) Keep production in serve-only mode

File:

  • /opt/docker-data/apps/docusaurus/docker-compose.yml

Production command remains:

command: npm run prod

This avoids recurring build work on container starts.

2) Explicit color mode configuration

File:

  • /opt/docker-data/apps/docusaurus/site/docusaurus.config.js

Applied:

colorMode: {
defaultMode: 'dark',
disableSwitch: false,
respectPrefersColorScheme: false,
}

Result: dark mode is the default when no stored user preference exists, and switching remains enabled.

3) Rebuild and restart

sudo docker exec docusaurus sh -lc 'cd /app && npm run build'
sudo docker restart docusaurus

Validation

  • docusaurus serves build successfully.
  • Public endpoint remains healthy behind Cloudflare Access (302, no 502).
  • Generated HTML now boots with dark default:
document.documentElement.setAttribute("data-theme", t || "dark")

Notes

The search index (build/search-index.json) is large for this documentation set (~24 MB). This affects client-side search payload, but it is separate from backend idle CPU/RAM consumption.